<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>观察者Observable</title>
</head>
<body>
<script type="module">
    import Observable from '../js/observable.js'

    // 测试1
    // var oa1 = new Observable(function (observer) {
    //     var i = 0
    //     var id = setInterval(function () {
    //         if (i < 10) {
    //             observer.next(i++)
    //         } else {
    //             observer.complete()
    //             observer.next('stop me!')
    //             clearInterval(id)
    //         }
    //     }, 100)

    //     return function () {
    //         console.log('disposed!')
    //         clearInterval(id)
    //     }
    // })

    // oa1.subscribe({
    //     next: function (value) {
    //         console.log('next -> ' + value)
    //     },
    //     error: function (value) {
    //         console.log('error')
    //     },
    //     complete: function (value) {
    //         console.log('complete')
    //     }
    // })

    // 测试2
    var oa2 = new Observable(function (observer) {
        var i = 0
        var id = setInterval(function () {
            if (i < 10) {
                observer.next(i++)
            } else {
                //observer.complete()
                //observer.next('stop me!')
                clearInterval(id)
            }
        }, 100)

        return function () {
            console.log('disposed!')
            clearInterval(id)
        }
    })

    oa2.filter(function (value) {return false})
        .debounceTime(1000)
        // .timeout(1000)
        .subscribe({
            next: function (value) {
                console.log('debounceTime -> ' + value)
            },
            complete: function () {
                console.log('operator complete')
            }
        })

</script>
</body>
</html>